\documentclass[%
    %draft,
    %submission,
    %compressed,
    a4paper,
    %12pt,
    9pt,
    final,
    %technote,
    %internal,
    %submitted,
    %inpress,
    %reprint,
    %titlepage,
    notitlepage,
    %anonymous,
    narroweqnarray,
    inline,
    oneside,
    %invited,
    %conference
    article
    ]{ieee}

%\documentclass[a4paper,11pt]{article}
\usepackage[spanish]{babel}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsfonts}
\usepackage{graphicx}
\usepackage{multirow}
\usepackage{epsfig}
\usepackage{epstopdf}

\newcommand{\latexiie}{\LaTeX2{\Large$_\varepsilon$}}

%\usepackage{ieeetsp}    % if you want the "trans. sig. pro." style
%\usepackage{ieeetc}    % if you want the "trans. comp." style
%\usepackage{ieeeimtc}    % if you want the IMTC conference style

% Use the `endfloat' package to move figures and tables to the end
% of the paper. Useful for `submission' mode.

%\usepackage {endfloat}

% Use the `times' package to use Helvetica and Times-Roman fonts
% instead of the standard Computer Modern fonts. Useful for the
% IEEE Computer Society transactions.
%\usepackage{times}
% (Note: If you have the commercial package `mathtime,' (from
% y&y (http://www.yandy.com), it is much better, but the `times'
% package works too). So, if you have it...
%\usepackage {mathtime}

% for any plug-in code... insert it here. For example, the CDC style...
%\usepackage{ieeecdc}

\begin{document}

\title[]{
	Entrega Preliminar III\\
	Perceptr\'on Multicapa}

\author{
     Luciano Mangiarotti (I.T.B.A),
\and Federico Santos (I.T.B.A),
\and Jimena Pose (I.T.B.A) \\ \\ }

\maketitle

\section{Introducci\'on}

\noindent El objetivo de este trabajo es analizar el comportamiento de un perceptrón 
multicapa. Se implementan y entrenan distintas redes para aprender las operaciones 
lógicas \textit{simetr\'ia} y \textit{paridad} con distinta cantidad de entradas.

\noindent Se emplean distintas funciones de activaci\'on y se evalúa el impacto que 
tiene la constande de proporcionalidad de aprendizaje $ \eta $ en la cantidad de 
\'epocas necesarias para alcanzar la cota de error indicada.

\noindent En la Sección II se plantean los detalles de la implementación y se explican
las decisiones tomadas. En la Sección III se presentan los resultados con sus conclusiones.

\section{Consideraciones de implementación}

\noindent Se puede demostrar que es posible representar cualquier función booleana 
con una sola capa oculta. Se propone además, que la cantidad total de unidades 
crezca polinomialmente con la cantidad de entradas.

\noindent Por este motivo se implementa un perceptrón multicapa con $N$ entradas, 
una unidad de salida y una capa oculta de $N$ neuronas, donde $ 2 \le N \le 5 $. 

\noindent Dado que los valores de salida de la red son binarios, se considera que una 
cota de error de $ E=0.001 $ en un patrón es aceptable.  También es aceptable 
obtener ese error en promedio por todos los patrones, por lo que se utiliza 
dicha cota de corte para el cómputo del error cuadrático medio en cada 
época.

\noindent Además, se establece una cantidad máxima de $50000$ épocas, determinada 
de manera empírica, para entrenar la red. De esta forma, el entrenamiento termina 
aunque no se haya alcanzado la cota de error fijada.

\noindent El conjunto de patrones de entrenamiento est\'a formado por todas las 
entradas de la tabla de verdad de cada una de las operaciones, que se presentan 
aleatoriamente, mezclándolos en cada época.

\noindent El método de actualización de los pesos es incremental, donde cada 
actualización se realiza al presentar cada patrón.

\noindent Por \'ultimo, se debe destacar que se usa la misma función de activación para 
todas las capas y no se agrega ninguna mejora al algoritmo \textit{back-propagation}.

\section{Resultados y Conclusiones}

\noindent En esta sección se muestran los resultados obtenidos durante el entrenamiento 
del perceptrón. Para todas las pruebas se usa $\beta = 0.5$.

\noindent Se observó experimentalmente que cuando se inicializan los pesos con 
valores muy cercanos al 0, el aprendizaje se estanca en mínimos locales con 
mayor frecuencia. 

\noindent Por esta razón, los pesos de las conexiones sinápticas se inicializan con 
valores aleatorios en el intervalo $(-0.8; 0.8)$.

\noindent Los resultados del entrenamiento de la red varían según los pesos iniciales. Por 
este motivo, en las tablas se muestra el mejor resultado obtenido luego de tres corridas.

\subsection{Función Escalón}

\noindent Usando la función $g(h) = sign(h)$, no es posible entrenar el perceptr\'on
debido a que la misma no es diferenciable y por lo tanto no es posible implementar 
el algoritmo de \textit{back-propagation} haciendo uso del gradiente descendente 
del error cuadr\'atico medio. Debido a este motivo, no se presentan resultados 
con dicha funci\'on de activaci\'on.

\subsection{Función Lineal}

\noindent Usando la función $g(h) = \beta h$, no es posible resolver los problemas 
mencionados m\'as arriba.

\noindent Utilizar una funci\'on de activaci\'on lineal en un perceptr\'on multicapa 
es equivalente a utilizar una funci\'on lineal en un perceptr\'on simple, debido a 
que se computan transformaciones lineales de transformaciones lineales a lo 
largo de las capas. 

\noindent Como con un perceptr\'on simple es imposible resolver estos problemas 
debido a que no son linealmente separables, entonces haciendo uso de un 
perceptr\'on multicapa con una funci\'on de activaci\'on lineal tampoco 
es posible.

\subsection{Funciones No Lineales}

\noindent Tambi\'en se utilizan las funciones no lineales, tangente hiperb\'olica (1) y 
exponencial (2), como función de transferencia.
\begin{equation}
	g(h) = \tanh (\beta h)
\end{equation}
\begin{equation}
	g(h) = \frac{1}{1 + e^{-2 \beta h}}
\end{equation}

\noindent En la Tabla \ref{tab:tabla1} y Tabla \ref{tab:tabla2} se observan los 
resultados obtenidos para $N = 2$ tanto para la simetría como para la 
paridad. Se observa que todos los resultados fueron satisfactorios.

\noindent En la Tabla \ref{tab:tabla3} y Tabla \ref{tab:tabla4} se observan los 
resultados correspondiente a $N = 3$. Se observa que con $\eta = 0.8$ no 
se llegó a la cota de error, esto puede deberse a que este valor hace 
oscilar los pesos m\'as que los otros.

\noindent En la Tabla \ref{tab:tabla5} y Tabla \ref{tab:tabla6} se observan los 
resultados obtenidos para $N = 4$. Se observa también que la mayor parte 
de los resultados fueron satisfactorios.

\noindent En la Tabla \ref{tab:tabla7} y Tabla \ref{tab:tabla8} se observan los 
resultados obtenidos para $N = 5$. Se observa que los resultados no fueron 
muy satisfactorios para la paridad, aunque es importante tener en cuenta 
que s\'olo se realizaron tres corridas.

% BETA = 0.5 
% Arquitectura [2 1]
% Simetría

\begin{table*}
	\centering
    	\begin{tabular}{c c c c c}
    	\hline
    	\hline
	\textbf{Funci\'on de transferencia} & \textbf{$\eta$} &\textbf{Cantidad de epocas} & \textbf{Error obtenido} \\
	\hline
	\hline
		\multirow{3}{*}{ $g(h)=\tanh(\beta h)$ } & 0.8 & 1098 & 0.000999271 \\
										& 0.5 & 1736 & 0.000999695 \\
										& 0.2 & 4336 & 0.00099988 \\
	\hline
		\multirow{3}{*}{ $g(h) = \frac{1}{1 + e^{-2 \beta h}}$ }	& 0.8 & 4202 & 0.000999799 \\
													& 0.5 & 1761 & 0.00099973 \\
													& 0.2 & 17006 & 0.000999964 \\
	\hline
	\end{tabular}
	\caption{Resultados del aprendizaje de la función simetría en un perceptrón de dos entradas}
	\label{tab:tabla1}
\end{table*}

% BETA = 0.5 
% Arquitectura [2 1]
% Paridad

\begin{table*}
	\centering
    	\begin{tabular}{c c c c c}
    	\hline
    	\hline
	\textbf{Funci\'on de transferencia} & \textbf{$\eta$} &\textbf{Cantidad de epocas} & \textbf{Error obtenido} \\
	\hline
	\hline
		\multirow{3}{*}{ $g(h)=\tanh(\beta h)$ } & 0.8 & 1096 & 0.000999321 \\
										& 0.5 & 1737 & 0.000999623 \\
										& 0.2 & 4307 & 0.000999813 \\
	\hline
		\multirow{3}{*}{ $g(h) = \frac{1}{1 + e^{-2 \beta h}}$ }	& 0.8 & 4065 & 0.000999946 \\
													& 0.5 & 6637 & 0.000999879 \\
													& 0.2 & 15055 & 0.000999982 \\  
	\hline
	\end{tabular}
	\caption{Resultados del aprendizaje de la función paridad en un perceptrón de dos entradas}
	\label{tab:tabla2}
\end{table*}

% BETA = 0.5 
% Arquitectura [3 1]
% Simetría

\begin{table*}
	\centering
    	\begin{tabular}{c c c c c}
    	\hline
    	\hline
	\textbf{Funci\'on de transferencia} & \textbf{$\eta$} &\textbf{Cantidad de epocas} & \textbf{Error obtenido} \\
	\hline
	\hline
		\multirow{3}{*}{ $g(h)=\tanh(\beta h)$ } & 0.8 & 50000 & 4.00502 \\
										& 0.5 & 1631 & 0.000999529 \\
										& 0.2 & 3379 & 0.000999961 \\
	\hline
		\multirow{3}{*}{ $g(h) = \frac{1}{1 + e^{-2 \beta h}}$ } 	& 0.8 & 2838 & 0.000999661 \\
													& 0.5 & 5360 & 0.000999788 \\
													& 0.2 & 13070 & 0.000999954 \\  
	\hline
	\end{tabular}
	\caption{Resultados del aprendizaje de la función simetría en un perceptrón de tres entradas}
	\label{tab:tabla3}
\end{table*}

% BETA = 0.5 
% Arquitectura [3 1]
% Paridad

\begin{table*}
	\centering
    	\begin{tabular}{c c c c c}
    	\hline
    	\hline
	\textbf{Funci\'on de transferencia} & \textbf{$\eta$} &\textbf{Cantidad de epocas} & \textbf{Error obtenido} \\
	\hline
	\hline
		\multirow{3}{*}{ $g(h)=\tanh(\beta h)$ } & 0.8 & 50000 & 4.00002 \\
										& 0.5 & 1607 & 0.000999378 \\
										& 0.2 & 3988 & 0.000999804 \\
	\hline
		\multirow{3}{*}{ $g(h) = \frac{1}{1 + e^{-2 \beta h}}$ }	& 0.8 & 7025 & 0.000999807 \\
													& 0.5 & 9023 & 0.000999922 \\
													& 0.2 & 21030 & 0.00099997 \\  
	\hline
	\end{tabular}
	\caption{Resultados del aprendizaje de la función paridad en un perceptrón de tres entradas}
	\label{tab:tabla4}
\end{table*}

% BETA = 0.5 
% Arquitectura [4 1]
% Simetría

\begin{table*}
	\centering
    	\begin{tabular}{c c c c c}
    	\hline
    	\hline
	\textbf{Funci\'on de transferencia} & \textbf{$\eta$} &\textbf{Cantidad de epocas} & \textbf{Error obtenido} \\
	\hline
	\hline
		\multirow{3}{*}{ $g(h)=\tanh(\beta h)$ } & 0.8 & 1187 & 0.000999811 \\
										& 0.5 & 1944 & 0.00099988 \\
										& 0.2 & 4763 & 0.000999928 \\
	\hline
		\multirow{3}{*}{ $g(h) = \frac{1}{1 + e^{-2 \beta h}}$ }	& 0.8 & 4529 & 0.000999885 \\
													& 0.5 & 7238 & 0.000999851 \\
													& 0.2 & 17828 & 0.000999985 \\  
	\hline
	\end{tabular}
	\caption{Resultados del aprendizaje de la función simetría en un perceptrón de cuatro entradas}
	\label{tab:tabla5}
\end{table*}

% BETA = 0.5 
% Arquitectura [4 1]
% Paridad

\begin{table*}
	\centering
    	\begin{tabular}{c c c c c}
    	\hline
    	\hline
	\textbf{Funci\'on de transferencia} & \textbf{$\eta$} &\textbf{Cantidad de epocas} & \textbf{Error obtenido} \\
	\hline
	\hline
		\multirow{3}{*}{ $g(h)=\tanh(\beta h)$ } & 0.8 & 50000 & 8.03432 \\
										& 0.5 & 50000 & 8 \\
										& 0.2 & 50000 & 8.00537 \\
	\hline
		\multirow{3}{*}{ $g(h) = \frac{1}{1 + e^{-2 \beta h}}$ }	& 0.8 & 21324 & 0.000999971 \\
													& 0.5 & 38568 & 0.000999934 \\
													& 0.2 & 50000 & 0.401054 \\  
	\hline
	\end{tabular}
	\caption{Resultados del aprendizaje de la función paridad en un perceptrón de cuatro entradas}
	\label{tab:tabla6}
\end{table*}

% BETA = 0.5 
% Arquitectura [5 1]
% Simetría

\begin{table*}
	\centering
    	\begin{tabular}{c c c c c}
    	\hline
    	\hline
	\textbf{Funci\'on de transferencia} & \textbf{$\eta$} &\textbf{Cantidad de epocas} & \textbf{Error obtenido} \\
	\hline
	\hline
		\multirow{3}{*}{ $g(h)=\tanh(\beta h)$ } & 0.8 & 1132 & 0.000999873 \\
										& 0.5 & 1843 & 0.000999898 \\
										& 0.2 & 3751 & 0.000999798 \\
	\hline
		\multirow{3}{*}{ $g(h) = \frac{1}{1 + e^{-2 \beta h}}$ }	& 0.8 & 3308 & 0.000999813 \\
													& 0.5 & 5247 & 0.000999999 \\
													& 0.2 & 13211 & 0.000999952 \\   
	\hline
	\end{tabular}
	\caption{Resultados del aprendizaje de la función simetría en un perceptrón de cinco entradas}
	\label{tab:tabla7}
\end{table*}

% BETA = 0.5 
% Arquitectura [5 1]
% Paridad

\begin{table*}
	\centering
    	\begin{tabular}{c c c c c}
    	\hline
    	\hline
	\textbf{Funci\'on de transferencia} & \textbf{$\eta$} &\textbf{Cantidad de epocas} & \textbf{Error obtenido} \\
	\hline
	\hline
		\multirow{3}{*}{ $g(h)=\tanh(\beta h)$ } & 0.8 & 2019 & 0.000999418 \\
										& 0.5 & 50000 & 16.0319 \\
										& 0.2 & 50000 & 16.0065 \\
	\hline
		\multirow{3}{*}{ $g(h) = \frac{1}{1 + e^{-2 \beta h}}$ }	& 0.8 & 50000 & 0.417331 \\
													& 0.5 & 50000 & 0.41802 \\
													& 0.2 & 50000 & 1.72067 \\  
	\hline
	\end{tabular}
	\caption{Resultados del aprendizaje de la función paridad en un perceptrón de cinco entradas}
	\label{tab:tabla8}
\end{table*}


%\begin{thebibliography}{1}
%
%\bibitem{1} Hertz J., Krogh A., Palmer R.G., \textit {Introduction to the Theory of Neural Computation}, Westview Press, 1991. Capítulo 6, Sección 4.
%
%\end{thebibliography}

\end{document}
